最近 Node.js 团队在官方文档上公布了一份最新的安全实践,解读了一些 Node.js 服务下一些常见的攻击场景以及预防手段,我们一起来看看吧! 如果我们的 Node.js 应用程序依赖于这个包,而没有严格确定哪个版本可以安全使用,则该包可以自动更新到最新的恶意版本,从而危及应用程序。 , data2); d.hasOwnProperty('b'); // Uncaught TypeError: d.hasOwnProperty is not a function 缓解措施 避免不安全的递归合并 通俗地理解就是:攻击者发送一个语句模糊的请求,就有可能被解析为两个不同的 HTTP 请求,第二请求可能会 “逃过” 正常的安全设备的检测,使攻击者可以绕过安全控制,未经授权访问敏感数据并直接危害其他应用程序用户 由于这种攻击产生的根本原因是 Node.js 与另一个 HTTP 服务器解释 HTTP 请求的方式不同,我们可以认为它是 Node.js、前端服务器两者的漏洞 。
image.png 0x00 Node.js安全检查引擎 Node.js作为常见的Web开发语言之一,Xcheck也针对该语言打造了对应的扫描引擎:JsCheck。 image.png 0x01 Node.js一些有意思的特性 JsCheck为了能够精准的做污点传播,对Node.js的特性进行了精确的适配,比如:this关键字,变量声明提升等。 this关键字 Node.js里的this根据所处的位置不同(普通函数,箭头函数),调用方式不同(直接调用,赋值给一个对象的属性再调用,当做构造函数调用),有着不同的指向含义。 0x03 扫描样例 目前,使用github上CodeQL的Node.js测试集来扫描,未做专门适配的情况下发现漏洞243个。 查看详细的扫描报告,针对每个漏洞,各个污点传播节点有详细的展示: image.png ---- 想了解Xcheck更多信息或者代码安全审计相关技术欢迎关注
本文的目标是提供关于如何创建安全的 Node.js GraphQL API 的快速指南。 你可能会想到一些问题: 使用 GraphQL API 的目的是什么? 什么是GraphQL API? 在今天的文章中,我们将专注于怎样用Node.js创建GraphQL API。 为什么要使用Node.js? GraphQL有好几个不同的支持库可供使用。 出于本文的目的,我们决定使用Node.js环境下的库,因为它的应用非常广泛,并且Node.js允许开发人员使用他们熟悉的前端语法进行服务器端开发。 首先,要确保安装了最新的Node.js版本。在本文发布时,在Nodejs.org上当前版本为10.15.3。 mutation 演示 现在我们可以用GraphQL Node.js API进行基本的CRUD操作了。接下来开始使用这些代码。
随着Node.js应用程序的规模和特性的扩展,它们的依赖关系也会扩展。为了让Node.js应用程序能够正常运行,你还需要测试框架、UI框架、数据库客户端、像Express这样的MVC库等等。 在这篇文章中,我们将回顾三种工具,它们是最近开源的,用于提高Node.js依赖的安全性,包括Socket、Node-Secure CLI和N|Solid。让我们开始吧! 什么是开源依赖关系? 作为开发人员,您有责任确保其他人编写的代码不会使您的系统变得不安全。 确保开源Node.js依赖的安全性 对开发人员来说,跟踪应用程序中使用的每个依赖项(包括直接依赖项和传递依赖项)是很重要的。 N|Solid N|Solid是来自NodeSource的一个可观察和洞察工具,用于管理Node.js的性能和安全。 Node.js包的评估依据是安全性、合规性和代码质量。 结尾 对于开发人员来说,更好地认识到他们对项目的依赖关系,从而减少黑客将恶意代码插入到开放源码依赖关系中的可能性。
可能暴露未初始化的内存问题(Buffer.alloc()),主要影响 Node.js 10.x 版本 2. 由于DH参数较大而导致的客户端DoS攻击, 影响 Node.js 10.x、 8.x、6.x版本 TSW 已经升级Node.js版本至10.9,官方推荐以下三个安全版本: 1. Node.js 10.9.0 (Current) 2. Node.js 8.11.4 (LTS "Carbon") 3. Node.js 6.14.4 (LTS "Boron")
可能暴露未初始化的内存问题(Buffer.alloc()),主要影响 Node.js 10.x 版本 2. 由于DH参数较大而导致的客户端DoS攻击, 影响 Node.js 10.x、 8.x、6.x版本 TSW 已经升级Node.js版本至10.9,官方推荐以下三个安全版本: 1. Node.js 10.9.0 (Current) 2. Node.js 8.11.4 (LTS "Carbon") 3. Node.js 6.14.4 (LTS "Boron") ↓↓↓ 了解更多漏洞详情,点击 https://nodejs.org/en/blog/vulnerability/august-2018-security-releases
因组里项目需要,我和另外一名同事要学习Node.js。 Node.js架构 ? 1. Node.js跨平台支持*nix与Windows得益于Libuv中间层,通过它去调用不同操作系统的底层操作。 2. 初学网络编程 Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和一个简易的HTTP客户端。 客户端在发起安全连接前会去获取服务器端的证书,并通过CA的证书验证服务器端证书的真伪。 四. Node.js学习资料 1. 《Node.js入门指南》,推荐,适合入门 2. 《深入简出Node.js》,有深度,推荐 五. 其他备忘 1.
原文地址:How to Create a Secure Node.js GraphQL API 作者:Marcos 本文的目的是提供一份快速指南 -- 《如何快速在如何在 Node.js 中创建安全的 为什么使用 Node.js? GraphQL 有几种不同的库可供我们实用。 出于本文的目的,我们决定实用 JavaScript 和 Node.js,因为它们被广泛地使用,并且 Node.js 允许开发者使用熟悉的前端语言来进行服务端开发。 在这之前,你需要了解 Node.js 和 Express 的基础知识。 首先,确保你的 Node.js 版本是最新的。撰写本文时,Node.js 当前的版本为 10.15.3。 初始化项目 我们先创建一个名为 node-graphql 的文件夹。
前言 Node.js 官方在 2026 年 1 月 13 日更新修复了多个严重安全漏洞,涉及缓冲区泄露、权限绕过、DoS 攻击等,影响所有活跃版本,建议所有用户尽快升级! 更多精彩文章欢迎关注我的公众号 正文 本次安全发布主要针对 Node.js 当前所有活跃版本(20.x、22.x、24.x、25.x)发布了补丁,累计修复了 3 个 高危、4 个 中危 和 1 个 低危
关于njsscan njsscan是一款功能强大的静态应用程序测试(SAST)工具,可以帮助广大研究人员找出Node.JS应用程序中不安全的代码模式。 -c CONFIG, --config CONFIG .njsscan配置文件的路径 --missing-controls 启用安全控制缺失检测 - WARNING - ERROR Github代码扫描 我们可以将下列内容添加进.github/workflows/njsscan_sarif.yml文件中,并对GitHub代码库进行安全扫描
在浏览器中,还可以利用 iframe,创建一个再多安全一些的隔离环境,本文着眼于 Node.js,在这里不做过多讨论。 在 Node.js 中呢,有没有其它选择? 另外,在 Node.js 通过 vm.runInContext 看起来似乎隔离了代码执行环境,但实际上却很容易「逃逸」出去。 事实 Node.js 的官方文档中也提到「不要把 VM 当做一个安全的沙箱,去执行任意非信任的代码」。 有哪些做了进一步工作的社区模块? 相比较而言 vm2 对各方面做了更多的安全工作,相对安全些。 如何建立一个更安全一些的沙箱? 通过上文的探究,我们并没有找到一个完美的方案在 Node.js 建立安全的隔离的沙箱。
有些项目对 Node.js 的版本有要求(例如:codesandbox-client 要求 Node.js 版本要兼容 ^10.22.1),这就需要有一种方法能在你的电脑上管理(安装、切换、删除)多个版本的 Node.js。 Fast and simple Node.js version manager, built in Rust. ? Works with .node-version and .nvmrc files 注:开源项目 codesandbox-client 即推荐使用 fnm 作为 Node.js 的版本管理器。 Administrator\Documents\WindowsPowerShell\profile.ps1 调整 WebStorm 的 Terminal 为 PowerShell 使用 fnm 安装指定版本 Node.js
图2:V8 引擎图标Node.js 的组成Node.js 运行时主要由 V8 引擎、标准库和本地模块组成,尤其是本地模块的多少,从底层决定了 Node.js 功能的强弱。 OpenSSL该模块提供了经过严密测试的许多加密/解密功能,现代 Web 依赖这些功能来实现安全性,比如 SSL 协议和 https 协议。c-ares异步 DNS 查询和解析库。 这套 JavaScript 接口,就是 Node.js 标准库。标准库是否优雅和强大,决定了 Node.js 的易用性,直接影响 Node.js 的市场表现。 Libuv 是 Node.js 最核心最基础的模块,Node.js 完全基于 Libuv 而构建。 你可能听说过 Node.js 采用了基于事件的、单线程的异步 I/O 架构,这是 Node.js 最大的特点,也是它和其它脚本语言最大的区别,Node.js 的这种能力就是依赖 Libuv 实现的。
文章目录 前言 下载和安装 Path环境变量 测试 推荐插件 总结 ---- 前言 Node.js是一个在服务器端可以解析和执行JavaScript代码的运行环境,也可以说是一个运行时平台,仍然使用JavaScript ---- 下载和安装 Node.js的官方网址是https://nodejs.org,进入官方网址,可以看到两个版本的安装包,LTS是长期稳定版,Current是最新版。
一、简介 1、什么是Node.js? Node.js 是一种建立在Google Chrome’s v8 engine上的 non-blocking (非阻塞), event-driven (基于事件的) I/O平台. Node.js平台使用的开发语言是JavaScript,平台提供了操作系统低层的API,方便做服务器端编程,具体包括文件操作、进程操作、通信操作等系统模块 2、Node.js的特性 基于V8引起渲染JS image.png 多版本安装方式 卸载已有的Node.js 下载nvm 在C盘创建目录dev 在dev目中中创建两个子目录nvm和nodejs 并且把nvm包解压进去nvm目录中 在install.cmd 文件上面右键选择【以管理员身份运行】 打开的cmd窗口直接回车会生成一个settings.txt文件,修改文件中配置信息 配置nvm和Node.js环境变量 NVM_HOME:C:\dev\nvm NVM_SYMLINK
最近笔者在阅读《深入浅出Node.js》,结合查阅的相关资料,本文算是一篇 Node.js 笔记。 Node.js 是基于 Chrome V8 引擎的 JavaScript 运行时环境。 在 Node.js 出现之前,JavaScript 只能在浏览器中使用。而 Node.js 的出现打破了这个局面。以下为 Chrome 浏览器和 Node.js 的组件构成。 Node.js 采用了 V8 引擎,并且在其基础上增加了处理本地文件等功能。但在浏览器中,出于安全考虑,你是无法访问浏览器的文件系统的。所以你可以理解 Node 中的 V8 引擎是增强后的版本。 浏览器和 Node.js 的结构是相似的,比如它们都是通过事件驱动的异步架构,浏览器通过事件驱动来完成界面 UI 交互,Node.js 通过事件驱动完成服务 I/O。 [3] 来,告诉你Node.js究竟是什么?
安全发布可用 对于以下问题,现在为 18.x、20.x、21.x Node.js 发布线提供了更新。 总结 Node.js 项目将于 2024 年 4 月 9 日或之后发布 18.x、20.x、21.x 发布线的新版本,以解决: 1 个高风险问题 影响 Node.js 的 18.x 发布线受到 1 个高风险问题的影响 Node.js 的 20.x 发布线受到 1 个高风险问题的影响。Node.js 的 21.x 发布线受到 1 个高风险问题的影响。 发布时间 发布将在 2024 年 4 月 9 日或之后提供。
很多时候,我苦恼于 Node.js 的调试,只会使用 console.log 这种带有侵入性的方法,但是其实 Node.js 也可以做到跟浏览器调试一样的方便。 这个链接是 Node.js 和 Chrome 之前通信的 websocket 地址,通过 websocket 通信,我们可以在 Chrome 中实时看到 Node.js 的结果。 Vscode 调试 除了浏览器之外,各大主流的 IDE 都支持 Node.js 的调试,本文以 Vscode 为例。 总结 本文总结了两种常见的调试 Node.js 的方式。第一种 Node.js 通过 websocket 的方式将信息传递给 Chrome 浏览器,我们直接在 Chrome 中进行调试。 通过 Attach to Node Process Action 的方式,可以便捷的调试正在运行的 Node.js 代码,而不需要配置。
速览 Chrome 80 稳定版发布 Node.js 13.6-13.8 发布 Firefox 73 正式发布 TypeScript 3.8 RC 发布 Angular 9.0.0 版本发布 Chrome Node.js 13.6-13.8 发布 ? 对各个 LTS 分支发布了相关的安全升级版本用于修复 http 相关的漏洞。 这些漏洞包括: CVE-2019-15606: 因没有截断header的空白符导致攻击者绕过安全检测。 CVE-2019-15604: 通过特定构造过的TLS信息导致 Node.js 服务退出,从而进行 DOS 攻击。 Firefox 73 正式发布 ? Firefox 73 正式发布了。
Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使 Node.js 表现得非常出色。 Node.js 应用程序运行于单个进程中,无需为每个请求创建新的线程。 当 Node.js 执行 I/O 操作时(例如从网络读取、访问数据库或文件系统),Node.js 会在响应返回时恢复操作,而不是阻塞线程并浪费 CPU 循环等待。 Node.js 来启用特定的实验中的特性。 框架和工具 Node.js 是一个底层的平台。